package model.cargarDatos;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.apache.log4j.Logger;

import com.stefanini.pe.bbva.mbl.carga.in.to.CargaLog;
import com.stefanini.pe.bbva.mbl.carga.in.to.CargaLogDetalle;
import com.stefanini.pe.bbva.mbl.in.bo.iface.CargaLogBO;
import com.stefanini.pe.bbva.mbl.in.bo.iface.CargaLogDetalleBO;
import com.stefanini.pe.bbva.mbl.in.bo.iface.VisorCargaTablaBO;
import com.stefanini.pe.bbva.mbl.in.listeners.SpringInit;
import com.stefanini.pe.framework.common.HelperDate;

public class VisorCargaDatosModel {
	private static final Logger logger = Logger.getLogger(VisorCargaDatosModel.class);
	
	private String lblError_Text="";
	private ArrayList listarConfiguracionLog = new ArrayList();
	private ArrayList listarConfiguracionDetLog = new ArrayList();
	private ArrayList listarFilasDinamicas = new ArrayList();

	private boolean mostrar=false;
	private boolean m_Egv_DatosLog_visible=false;
	CargaLogBO cargaLogService=null;
	CargaLogDetalleBO cargaLogDetalleService=null;
	Date fechaInicial = HelperDate.getFechaActual();
	Date fechaFinal = HelperDate.getFechaActual();
	String estado="";
	private boolean mostrarFila;
	private ArrayList listaDetLog = new ArrayList();
	private int m_intCargaFamProdLog_first=0;
	private List cargaFamProdDetLog = null;
	private ArrayList listaColumnLog = new ArrayList();
	private boolean flag;
	int rowNum = 0;     
	int colNum = 0;
	int rowCol = 0;
	Date fechaCarga;
	String horaCarga;
	String nombreArchivo;
	String nombreDescriptivo;
	Long fila;
	Long filaGrilla= new Long(-1);
	Long filaGrilla2= new Long(-1);
	private String rowStyle="";
	private String rowStyle1="";
	VisorCargaTablaBO visorCargaTablaService=null;
	
	
	public VisorCargaDatosModel(){
		logger.info("Inicio");
		
		cargaLogService =(CargaLogBO)SpringInit.getApplicationContext().getBean("cargaLogService");
		cargaLogDetalleService =(CargaLogDetalleBO)SpringInit.getApplicationContext().getBean("cargaLogDetalleService");
		visorCargaTablaService =(VisorCargaTablaBO)SpringInit.getApplicationContext().getBean("visorCargaTablaService");

		this.setListarConfiguracionDetLog(new ArrayList());
		this.setListarConfiguracionLog(new ArrayList());
		this.setListaDetLog(new ArrayList());
		this.setListaColumnLog(new ArrayList());
	
		this.fechaInicial=HelperDate.getFechaActual();
		this.fechaFinal=HelperDate.getFechaActual();
		this.mostrar=false;
		this.mostrarFila=false;
		
		this.estado="";
		this.lblError_Text="";
		this.m_Egv_DatosLog_visible=false;
		
		logger.info("Fin");
	}
	
	public String getRowStyle(){
		String cadena = "";
		boolean flag=false;
		
		logger.info("Inicio");
		
		for(int i=0;i<this.getListarConfiguracionLog().size();i++){
			CargaLog cargalog= (CargaLog)getListarConfiguracionLog().get(i);
			
			if (cargalog.getCodCargalog().equals(filaGrilla)){
				cadena = cadena + "totalFoo,";
				flag=true;
			}
			
			if (!flag){
				if(i%2==0){
					cadena = cadena+"FilaGrilla,";
				}else{
					cadena = cadena+"FilaAlternaGrilla,";
				}
			}else{
				flag=false;
			}
		}
		
		logger.info("Fin");
		
		return cadena;
	}
	
	
	public String getRowStyle1(){
		String cadena = "";
		boolean flag=false;
		
		logger.info("Inicio");
		
		for(int i=0;i<this.getListarConfiguracionDetLog().size();i++){
			CargaLogDetalle cargalogDet= (CargaLogDetalle)getListarConfiguracionDetLog().get(i);
			
			if (cargalogDet.getLinea().equals(filaGrilla2)){
				cadena = cadena + "totalFoo,";
				flag=true;
			}
			
			if (!flag){
				if(i%2==0){
					cadena = cadena+"FilaGrilla,";
				}else{
					cadena = cadena+"FilaAlternaGrilla,";
				}
			}else{
				flag=false;
			}
		}	
		
		logger.info("Fin");
		
		return cadena;
	}
	public String getColumnValue() {
		logger.info("Inicio");
		
		List rows = (ArrayList)getListaDetLog();
		
		if(colNum >= rows.size()){
			colNum = 0;
			rowNum++;
			if(rowNum >= ((ArrayList)getListaDetLog()).size()){
				rowNum = 0;				
			}
		}		
		List rowResp = (ArrayList)getListaDetLog();	
		String resp = (String) (rowResp.get(colNum)==null?"":rowResp.get(colNum).toString());
		colNum++;
		
		if(rowCol==listaColumnLog.size()){
			rowCol = 0;
		}
		rowCol++;		
			
		logger.info("Fin");
		
		return resp;
	}
	/**
	 * @return Returns the mostrar.
	 */
	public boolean isMostrar() {
		return mostrar;
	}
	/**
	 * @param mostrar The mostrar to set.
	 */
	public void setMostrar(boolean mostrar) {
		this.mostrar = mostrar;
	}
	
	
	/**
	 * @return Returns the listarConfiguracionDetLog.
	 */
	public ArrayList getListarConfiguracionDetLog() {
		return listarConfiguracionDetLog;
	}
	/**
	 * @param listarConfiguracionDetLog The listarConfiguracionDetLog to set.
	 */
	public void setListarConfiguracionDetLog(ArrayList listarConfiguracionDetLog) {
		this.listarConfiguracionDetLog = listarConfiguracionDetLog;
	}


	/**
	 * @return Returns the listarConfiguracionLog.
	 */
	public ArrayList getListarConfiguracionLog() {
		return listarConfiguracionLog;
	}
	/**
	 * @param listarConfiguracionLog The listarConfiguracionLog to set.
	 */
	public void setListarConfiguracionLog(ArrayList listarConfiguracionLog) {
		this.listarConfiguracionLog = listarConfiguracionLog;
	}

	/**
	 * @return Returns the cargaLogDetalleService.
	 */
	public CargaLogDetalleBO getCargaLogDetalleService() {
		return cargaLogDetalleService;
	}
	/**
	 * @param cargaLogDetalleService The cargaLogDetalleService to set.
	 */
	public void setCargaLogDetalleService(
			CargaLogDetalleBO cargaLogDetalleService) {
		this.cargaLogDetalleService = cargaLogDetalleService;
	}
	/**
	 * @return Returns the cargaLogService.
	 */
	public CargaLogBO getCargaLogService() {
		return cargaLogService;
	}
	/**
	 * @param cargaLogService The cargaLogService to set.
	 */
	public void setCargaLogService(CargaLogBO cargaLogService) {
		this.cargaLogService = cargaLogService;
	}
	/**
	 * @return Returns the estado.
	 */
	public String getEstado() {
		return estado;
	}
	/**
	 * @param estado The estado to set.
	 */
	public void setEstado(String estado) {
		this.estado = estado;
	}
	/**
	 * @return Returns the fechaFinal.
	 */
	public Date getFechaFinal() {
		return fechaFinal;
	}
	/**
	 * @param fechaFinal The fechaFinal to set.
	 */
	public void setFechaFinal(Date fechaFinal) {
		this.fechaFinal = fechaFinal;
	}
	/**
	 * @return Returns the fechaInicial.
	 */
	public Date getFechaInicial() {
		return fechaInicial;
	}
	/**
	 * @param fechaInicial The fechaInicial to set.
	 */
	public void setFechaInicial(Date fechaInicial) {
		this.fechaInicial = fechaInicial;
	}


	
	/**
	 * @return Returns the m_Egv_DatosLog_visible.
	 */
	public boolean isEgv_DatosLog_visible() {
		return m_Egv_DatosLog_visible;
	}
	/**
	 * @param egv_DatosLog_visible The m_Egv_DatosLog_visible to set.
	 */
	public void setEgv_DatosLog_visible(boolean egv_DatosLog_visible) {
		m_Egv_DatosLog_visible = egv_DatosLog_visible;
	}
	/**
	 * @return Returns the lblError_Text.
	 */
	public String getLblError_Text() {
		return lblError_Text;
	}
	/**
	 * @param lblError_Text The lblError_Text to set.
	 */
	public void setLblError_Text(String lblError_Text) {
		this.lblError_Text = lblError_Text;
	}

	/**
	 * @return Returns the mostrarFila.
	 */
	public boolean isMostrarFila() {
		return mostrarFila;
	}
	/**
	 * @param mostrarFila The mostrarFila to set.
	 */
	public void setMostrarFila(boolean mostrarFila) {
		this.mostrarFila = mostrarFila;
	}
	/**
	 * @return Returns the cargaFamProdDetLog.
	 */
	public List getCargaFamProdDetLog() {
		return cargaFamProdDetLog;
	}
	/**
	 * @param cargaFamProdDetLog The cargaFamProdDetLog to set.
	 */
	public void setCargaFamProdDetLog(List cargaFamProdDetLog) {
		this.cargaFamProdDetLog = cargaFamProdDetLog;
	}
	
	/**
	 * @return Returns the m_Egv_DatosLog_visible.
	 */
	public boolean isM_Egv_DatosLog_visible() {
		return m_Egv_DatosLog_visible;
	}
	/**
	 * @param egv_DatosLog_visible The m_Egv_DatosLog_visible to set.
	 */
	public void setM_Egv_DatosLog_visible(boolean egv_DatosLog_visible) {
		m_Egv_DatosLog_visible = egv_DatosLog_visible;
	}
	/**
	 * @return Returns the m_intCargaFamProdLog_first.
	 */
	public int getM_intCargaFamProdLog_first() {
		return m_intCargaFamProdLog_first;
	}
	/**
	 * @param cargaFamProdLog_first The m_intCargaFamProdLog_first to set.
	 */
	public void setM_intCargaFamProdLog_first(int cargaFamProdLog_first) {
		m_intCargaFamProdLog_first = cargaFamProdLog_first;
	}
	/**
	 * @return Returns the listaColumnLog.
	 */
	public ArrayList getListaColumnLog() {
		return listaColumnLog;
	}
	/**
	 * @param listaColumnLog The listaColumnLog to set.
	 */
	public void setListaColumnLog(ArrayList listaColumnLog) {
		this.listaColumnLog = listaColumnLog;
	}
	/**
	 * @return Returns the listaDetLog.
	 */
	public ArrayList getListaDetLog() {
		return listaDetLog;
	}
	/**
	 * @param listaDetLog The listaDetLog to set.
	 */
	public void setListaDetLog(ArrayList listaDetLog) {
		this.listaDetLog = listaDetLog;
	}
	/**
	 * @return Returns the flag.
	 */
	public boolean isFlag() {
		return flag;
	}
	/**
	 * @param flag The flag to set.
	 */
	public void setFlag(boolean flag) {
		this.flag = flag;
	}
	/**
	 * @return Returns the horaCarga.
	 */
	public String getHoraCarga() {
		return horaCarga;
	}
	/**
	 * @param horaCarga The horaCarga to set.
	 */
	public void setHoraCarga(String horaCarga) {
		this.horaCarga = horaCarga;
	}
	/**
	 * @return Returns the nombreArchivo.
	 */
	public String getNombreArchivo() {
		return nombreArchivo;
	}
	/**
	 * @param nombreArchivo The nombreArchivo to set.
	 */
	public void setNombreArchivo(String nombreArchivo) {
		this.nombreArchivo = nombreArchivo;
	}
	/**
	 * @return Returns the nombreDescriptivo.
	 */
	public String getNombreDescriptivo() {
		return nombreDescriptivo;
	}
	/**
	 * @param nombreDescriptivo The nombreDescriptivo to set.
	 */
	public void setNombreDescriptivo(String nombreDescriptivo) {
		this.nombreDescriptivo = nombreDescriptivo;
	}
	/**
	 * @return Returns the rowCol.
	 */
	public int getRowCol() {
		return rowCol;
	}
	/**
	 * @param rowCol The rowCol to set.
	 */
	public void setRowCol(int rowCol) {
		this.rowCol = rowCol;
	}
	/**
	 * @return Returns the rowNum.
	 */
	public int getRowNum() {
		return rowNum;
	}
	/**
	 * @param rowNum The rowNum to set.
	 */
	public void setRowNum(int rowNum) {
		this.rowNum = rowNum;
	}
	/**
	 * @return Returns the fechaCarga.
	 */
	public Date getFechaCarga() {
		return fechaCarga;
	}
	/**
	 * @param fechaCarga The fechaCarga to set.
	 */
	public void setFechaCarga(Date fechaCarga) {
		this.fechaCarga = fechaCarga;
	}
	/**
	 * @return Returns the listarFilasDinamicas.
	 */
	public ArrayList getListarFilasDinamicas() {
		return listarFilasDinamicas;
	}
	/**
	 * @param listarFilasDinamicas The listarFilasDinamicas to set.
	 */
	public void setListarFilasDinamicas(ArrayList listarFilasDinamicas) {
		this.listarFilasDinamicas = listarFilasDinamicas;
	}
	/**
	 * @return Returns the fila.
	 */
	public Long getFila() {
		return fila;
	}
	/**
	 * @param fila The fila to set.
	 */
	public void setFila(Long fila) {
		this.fila = fila;
	}
	

	/**
	 * @return Returns the filaGrilla.
	 */
	public Long getFilaGrilla() {
		return filaGrilla;
	}
	/**
	 * @param filaGrilla The filaGrilla to set.
	 */
	public void setFilaGrilla(Long filaGrilla) {
		this.filaGrilla = filaGrilla;
	}
	/**
	 * @return Returns the filaGrilla2.
	 */
	public Long getFilaGrilla2() {
		return filaGrilla2;
	}
	/**
	 * @param filaGrilla2 The filaGrilla2 to set.
	 */
	public void setFilaGrilla2(Long filaGrilla2) {
		this.filaGrilla2 = filaGrilla2;
	}
	/**
	 * @param rowStyle The rowStyle to set.
	 */
	public void setRowStyle(String rowStyle) {
		this.rowStyle = rowStyle;
	}

	/**
	 * @param rowStyle1 The rowStyle1 to set.
	 */
	public void setRowStyle1(String rowStyle1) {
		this.rowStyle1 = rowStyle1;
	}
	
	public VisorCargaTablaBO getVisorCargaTablaService() {
		return visorCargaTablaService;
	}

	public void setVisorCargaTablaService(
			VisorCargaTablaBO visorCargaTablaService) {
		this.visorCargaTablaService = visorCargaTablaService;
	}
}

